package com.walter.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Util {

    private static String SALT = "123u5knlngsu5041o400jnsf343";

    public static String md5(String str) {
        str += SALT;
        try {
            // 加密对象，指定加密方式
            MessageDigest md5 = MessageDigest.getInstance("md5");
            // 准备要加密的数据
            byte[] b = str.getBytes();
            // 加密
            byte[] digest = md5.digest(b);
            // 十六进制的字符
            char[] chars = new char[]{'0', '1', '2', '3', '4', '5',
                    '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
            StringBuilder sb = new StringBuilder();
            // 处理成十六进制的字符串(通常)
            for (byte bb : digest) {
                sb.append(chars[(bb >> 4) & 15]);
                sb.append(chars[bb & 15]);
            }
            // 打印加密后的字符串
            return sb.toString();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return str;
        }
    }

    /**
     * @param str  需要加密的字符串
     * @param salt 盐值
     * @return
     */
    public static String md5(String str, String salt) {
        SALT = salt;
        return md5(str);
    }

    private MD5Util() {
    }

//    public static void main(String[] args) {
//        // 需要加密的字符串
//        String src = "123456";
//        System.out.println(md5(src));
//    }

}
